/*
 * Copyright (C) 2012 mAPPn.Inc
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.mol.market.demo.ui;

import java.util.ArrayList;
import java.util.HashMap;

import android.content.Intent;
import android.os.Bundle;

import com.mol.market.Constants;
import com.mol.market.R;
import com.mol.market.common.network.MarketAPI;
import com.mol.market.common.util.ScreenRules;
import com.mol.market.common.util.ScreenRules.Rules;
import com.mol.market.demo.widget.LazyLoadFragmentWrapper;
import com.mol.market.ui.core.GridAdapter;
import com.mol.market.ui.core.GridAdapter.OnItemClickListener;
import com.mol.market.ui.core.LazyLoadAdapter;
import com.mol.market.ui_v4.ProductDetailActivity;

/**
 * 分类列表页(Tab + List)
 * @author Chaos	
 * @Description 展示{@link TabFragmentActivity}中的每一个Tab
 * @date 2013-1-23 
 * @see TabFragmentActivity
 */
public class CategoryListFragment extends LazyLoadFragmentWrapper{
    
    @Override
    protected ArrayList<HashMap<String, Object>> getDataFromResult(int method, Object obj) {
        return (ArrayList<HashMap<String, Object>>) ((HashMap<String, Object>)obj)
                .get(Constants.KEY_PRODUCT_LIST);
    }

    @Override
    protected void load() {
        Bundle args = getArguments();
        
        if(args == null){
            //no res to load
            return ;
        }
        
        boolean isLeft = args.getBoolean("left");
        
        int mSortType = isLeft ? Constants.ORDER_TYPE_INSTALLED_NUM : Constants.ORDER_TYPE_TIME;
        
        String mCategoryId = args.getString(Constants.EXTRA_CATEGORY_ID);
        
        if (Constants.ORDER_TYPE_INSTALLED_NUM == mSortType) {
            MarketAPI.getProducts(getApplicationContext(), this, getSize(),
                    getStart(), mSortType, mCategoryId);
        } else if (Constants.ORDER_TYPE_TIME == mSortType) {
            MarketAPI.getProducts(getApplicationContext(), this, getSize(),
                    getStart(), 4, mCategoryId);
        }
    }

    @Override
    protected LazyLoadAdapter initLazyLoadAdapter() {
        
        GridAdapter adapter = new GridAdapter(
                this, 
                null, 
                ScreenRules.getLayout(getWidthMatching(), Rules.Download),
                new String[] { 
                        Constants.KEY_PRODUCT_ICON_URL, 
                        Constants.KEY_PRODUCT_NAME,
                        Constants.KEY_PRODUCT_AUTHOR, 
                        Constants.KEY_PRODUCT_IS_STAR,
//                        Constants.KEY_PRODUCT_RATING, 
                        Constants.KEY_PRODUCT_DOWNLOAD ,
                        Constants.KEY_PRODUCT_SIZE,
                        Constants.KEY_PRODUCT_DOWNLOAD_COUNT,
                        "flag"
                        }, 
                new int[] {
                        R.id.iv_logo, 
                        R.id.tv_name, 
                        R.id.tv_description, 
                        R.id.iv_star,
//                        R.id.rb_app_rating, 
                        R.id.tv_download ,
                        R.id.tv_size,
                        R.id.tv_downloading,
                        R.id.flag
                        });
        adapter.setProductList();
        
        adapter.setNumColumns(ScreenRules.getNumColumns(getWidthMatching(), Rules.Download));
        
        adapter.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(int pos, int realPos, HashMap<String, Object> item) {
                String pid = (String) item.get(Constants.KEY_PRODUCT_ID);
                String name = (String) item.get(Constants.KEY_PRODUCT_NAME);
                Intent detailIntent = new Intent(getActivity(), ProductDetailActivity.class);
                detailIntent.putExtra(Constants.EXTRA_PRODUCT_ID, pid);
                detailIntent.putExtra(Constants.EXTRA_PRODUCT_NAME, name);
                detailIntent.putExtra(Constants.EXTRA_SOURCE_TYPE, Constants.SOURCE_TYPE_GFAN);
                getActivity().startActivity(detailIntent);
            }
        });
        
        return adapter;
    }

}
